home *** CD-ROM | disk | FTP | other *** search
- /*
- 2009 - Copyright by Bee <http://www.honeybeenet.altervista.org>.
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
- //I took something from:
- //https://developer.mozilla.org/en/Creating_Sandboxed_HTTP_Connections#HTTP_notifications
-
- function beefree_useragent_new()
- {
- var beefree_X = beefree_random_string(beefree_random_number(5) + 2);
- var beefree_U = beefree_random_string(1);
- var beefree_OS = beefree_random_string(beefree_random_number(8) + 4);
- var beefree_LANG = beefree_random_string(2)+"-"+beefree_random_string(2);
- var beefree_RV = beefree_random_string(beefree_random_number(12) + 2);
- var beefree_FAKE_1 = beefree_random_string(beefree_random_number(6) + 5) + "/2010" + beefree_random_number(10000);
- var beefree_FAKE_2 = beefree_random_string(beefree_random_number(6) + 5) + "/" + beefree_random_number(10) + "." + beefree_random_number(10) + "." + beefree_random_number(10);
- var xtra = beefree_X + "; " + beefree_U + "; " + beefree_OS + "; " + beefree_LANG + "; " + beefree_RV;
- var useragent = "Mozilla/5.0 (" + xtra + ") " + beefree_FAKE_1 + " " + beefree_FAKE_2;
- return useragent;
- }
-
- var beefree_useragents_list = new Object();
-
- var beefree_opt_referer_remove = beefree_pref_do_get_bool("opt.referer.remove", true);
-
- var beefree_listener =
- {
- observe : function(aSubject, aTopic, aData)
- {
- if (aTopic == "http-on-modify-request")
- {
- try
- {
- var httpChannel = aSubject.QueryInterface(Components.interfaces.nsIHttpChannel);
- } catch(e) { return; }
- var msg = "";
- var handler_index = -1;
- try
- {
- var host = httpChannel.URI.asciiHost;// new String(httpChannel.getRequestHeader("host"))
- handler_index = beefree_handler_find_from_host(host, false);
- if(handler_index >= 0)
- {
- if(beefree_website_get_info(handler_index, "referer.remove") == true) //Access to websites[]
- {
- var useragent = "";
- for (var handler_index_item in beefree_useragents_list)
- {
- if(handler_index_item == handler_index)
- {
- useragent = beefree_useragents_list[handler_index_item];
- break;
- }
- }
- if(useragent.length == 0)
- {
- useragent = beefree_useragents_list[handler_index] = beefree_useragent_new();
- msg += (msg.length > 0 ? "\n" : "") + "[BeeFREE] Fake UA for: <" + host + "> is: <" + useragent + ">";
- }
- msg += (msg.length > 0 ? "\n" : "") + "[BeeFREE] Faking UA on: <" + host + ">";
- httpChannel.setRequestHeader("user-agent", useragent, false);
- }
- }
- } catch(e) { }
- try
- {
- var address = "";
- var referer = "";
- try
- {
- address = httpChannel.URI.asciiSpec;
- } catch(e) { }
- try
- {
- referer = new String(httpChannel.getRequestHeader("referer"));
- } catch(e) { }
- handler_index = -1;
- if(!(handler_index >= 0))
- if(beefree_is_protocol_web(address))
- handler_index = beefree_handler_find_from_url(address, false);
- if(!(handler_index >= 0))
- if(beefree_is_protocol_web(referer))
- handler_index = beefree_handler_find_from_url(referer, false);
- if(handler_index >= 0)
- {
- if(beefree_website_get_info(handler_index, "useragent.remove") == true) //Access to websites[]
- {
- msg += (msg.length > 0 ? "\n" : "") + "[BeeFREE] Removing referrer from: <" + address + ">";
- httpChannel.setRequestHeader("referer","", false);
- }
- }
- else
- {
- if(beefree_opt_referer_remove && beefree_is_protocol_web(address) && beefree_is_protocol_web(referer))
- {
- if(beefree_host_from_address(address) != beefree_host_from_address(referer))
- {
- msg += (msg.length > 0 ? "\n" : "") + "[BeeFREE] Removing referrer from: <" + address + ">";
- httpChannel.setRequestHeader("referer","", false);
- }
- }
- }
- } catch(e) { }
- if(msg.length > 0)
- beefree_console_debug(msg);
- }
- },
-
- QueryInterface : function(aIID) {
- if (aIID.equals(Components.interfaces.nsISupports) ||
- aIID.equals(Components.interfaces.nsIObserver))
- return this;
- throw Components.results.NS_NOINTERFACE;
- }
- };
-
- // get the observer service and register for
- var observerService = Components.classes["@mozilla.org/observer-service;1"]
- .getService(Components.interfaces.nsIObserverService);
- observerService.addObserver(beefree_listener, "http-on-modify-request", false);
-
-
-